<?php
class AssinantesController extends AppController {

	var $name = 'Assinantes';
	var $components = array('EmailSender',);
	var $paginate = array(
        'limit' => 10,
        'order' => array(
            'Assinante.nome' => 'asc'
        )
    );
    
    function beforeFilter(){
    	$this->Auth->allow("confirmacao",'enviaEmailConfirmacao','add');
    }

	function confirmacao(){
		$dados = $this->Assinante->read(null, $this->params['pass']['0']);
		$dados = $dados['Assinante'];
		$hash = $this->EmailSender->calculaHash($dados['nome'], $dados['email'], $dados['date_assinatura']);
		if($hash === $this->params['pass'][1]){
			$dados['ativo'] = 1;
			if($this->Assinante->save($dados))
				$this->Session->setFlash("Sua conta foi ativada com sucesso! Agora você receberá nossos E-mails informativos!");
			else
				$this->Session->setFlash("Dados inválidos! Tente novamente!");
		}
		$this->redirect(array('controller'=>'pages', 'action'=>'index'));
	}
	
	// TODO Cancelamento de assinatura
	function cancelarAssinatura(){
		if(!empty($this->data)){
			$dados = $this->Assinante->read(null, $this->params['pass']['0']);
			$dados = $dados['Assinante'];
			$hash = $this->EmailSender->calculaHash($dados['nome'], $dados['email'], $dados['date_assinatura']);
			if($hash === $this->params['pass'][1]){
				if($this->Assinante->delete($dados['id_assinantes']))
					$this->Session->setFlash("Sua assinatura foi cancelada com sucesso! Você não receberá mais nossos E-mails!");
				else
					$this->Session->setFlash("Dados inválidos! Tente novamente!");
			}
			$this->redirect(array('controller'=>'pages', 'action'=>'index'));
		}
		
	}
	
	
	function enviaEmailConfirmacao($data, $id){
		$this->EmailSender->smtpMessage();
		$this->EmailSender->from();
		$this->EmailSender->sendTo($data['Assinante']['nome'], $data['Assinante']['email']);
		$this->EmailSender->assunto("Confirmação de Assinatura");
		$this->EmailSender->setLayout('confirmacao');
		$this->EmailSender->setTemplate('confirmacao');
		// variáveis a serem usadas
		$this->set("nome", $data['Assinante']['nome']);
		$this->set('email', $data['Assinante']['email']);
		$this->set('id', $id);
		$hash = $this->EmailSender->calculaHash($data['Assinante']['nome'],$data['Assinante']['email'],$data['Assinante']['date_assinatura']);
		$this->set('hash', $hash);
		$this->EmailSender->enviar();
	}

	function add() {
		if (!empty($this->data)) {
			$this->Assinante->create();
			$this->data['Assinante']['date_assinatura'] = array('day'=>date('d'), 'month'=>date('m'), 'year' => date('Y'), );
			$this->data['Assinante']['ativo'] = 0;
			if ($this->Assinante->save($this->data)) {
				$this->enviaEmailConfirmacao($this->data, $this->Assinante->id);
				$this->Session->setFlash(__(
					'Um E-mail com instruções foi enviado para '.$this->data['Assinante']['email'], true));
				$this->redirect(array('controller'=>'pages','action' => 'index'));
			} else {
				$this->Session->setFlash(__('Não foi possível cadastrar! Tente novamente!', true));
				$this->redirect(array('controller'=>'pages','action' => 'index'));
			}
		}
	}
	
	/********************* ADMINISTRADOR ************************************/
	
	function admin_index() {
		$this->layout = 'admin';
		$this->Assinante->recursive = 0;
		$this->set('assinantes', $this->paginate());
	}


	function admin_delete($id = null) {
		$this->layout = 'admin';
		if (!$id) {
			$this->Session->setFlash(__('ID inválido', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Assinante->delete($id)) {
			$this->Session->setFlash(__('Assinante apagado', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Assinante não foi apagado', true));
		$this->redirect(array('action' => 'index'));
	}
	
}
?>